package service.array;

import domain.dto.DeptDto;
import domain.entity.Dept;
import domain.vo.DeptVo;
import domain.vo.Result;
import service.IDeptService;
import service.IUserService;


public class DeptService extends Baseservice<Dept,DeptDto, DeptVo> implements IDeptService {



    private IUserService userService;

    private static IDeptService singleton;

    private DeptService(){
        date  = new Dept[DATA_SIZE+1];
        temp = new DeptVo[DATA_SIZE];
    }
    public static IDeptService getInstance(){
        if(singleton==null){
            singleton=new DeptService();
        }
        return singleton;
    }
@Override
     DeptVo convertToVo(Dept dept){

        return  new DeptVo(dept.getId(),dept.name,dept.phone);
    }
    @Override
      Dept createEntity(DeptDto dto, int id){

        return new Dept(id,dto.name,dto.phone);
    }
@Override
     void updateEntity(DeptDto dto, Dept dept ){
        dept.name=dto.name;
        dept.phone=dto.phone;
    }

@Override
    public  Result delete(int id) {
        if(!existById(id)){
            return Result.failure("删除失败，不存在该数据");
        }
        if(userService == null){
            userService = UserService.getInstance();
        }
        if(userService.deptInUse(id)){
            return Result.failure("删除失败，还有用户属于该部门，不能删除");
        }
        date[id]=null;
        return Result.success("删除成功",null);
    }
}
